Veb-ilovalarni ulashish nishoni sifatida joriy etish va ro'yxatdan o'tkazish bo'yicha to'liq qo'llanma, global auditoriya uchun platformalararo kontentni uzluksiz ulashishni ta'minlaydi.
Uzluksiz Ulashish Imkoniyatini Ochish: Frontend Web Share Target API Ilovalarini Ro'yxatdan O'tkazishga Chuqur Kirish
Bizning tobora o'zaro bog'lanib borayotgan raqamli dunyomizda kontentni uzluksiz ulashish qobiliyati shunchaki qulaylik emas, balki asosiy talabdir. Dunyo bo'ylab foydalanuvchilar tez-tez veb-sahifalar, rasmlar, matn parchalari va fayllarni bir ilovadan boshqasiga ulashadilar. Mahalliy ilovalar uzoq vaqtdan beri bu integratsiyalashgan ulashish tajribasini taqdim etishda ustun bo'lsa-da, veb-ilovalar tarixan ortda qolgan, ko'pincha foydalanuvchilardan kontentni qo'lda nusxalash-joylashtirish yoki yuklab olish-yuklashni talab qilgan. Bu to'siq vebning qamrovi va ta'sirini cheklab qo'ydi, ayniqsa qurilma cheklovlari yoki ma'lumotlar narxi tufayli veb-birinchi tajribalar muhim bo'lgan hududlarda.
Web Share Target API — bu bo'shliqni to'ldiruvchi kuchli brauzer xususiyati bo'lib, Progressiv Veb-Ilovalarga (PWA) o'zlarini ulashish nishonlari sifatida ro'yxatdan o'tkazish imkonini beradi. Bu shuni anglatadiki, sizning veb-ilovangiz operatsion tizimning mahalliy ulashish menyusida, xuddi har qanday o'rnatilgan mahalliy ilova kabi paydo bo'lishi mumkin. Tasavvur qiling, foydalanuvchi yangiliklar saytida ilhomlantiruvchi maqola topib, uni darhol sizning PWA asosidagi o'qish ro'yxatingizga ulashadi yoki fotosuratni to'g'ridan-to'g'ri o'z galereyasidan sizning veb-asosidagi foto tahrirlovchingizga yuklaydi. Bu qobiliyat foydalanuvchi tajribasini keskin yaxshilaydi, chuqurroq jalb qilishni rag'batlantiradi va vebning birinchi darajali platforma sifatidagi mavqeini mustahkamlaydi.
Ushbu keng qamrovli qo'llanma sizni Web Share Target API bo'ylab sayohatga olib chiqadi. Biz uning asosiy tushunchalarini o'rganamiz, Veb Manifest orqali ilovalarni ro'yxatdan o'tkazishning nozik tafsilotlariga kirib boramiz, Service Worker'ning muhim rolini tushunamiz va sizga ushbu xususiyatni o'z veb-ilovalaringizda joriy etishga imkon beradigan amaliy, global miqyosdagi misollarni taqdim etamiz. Maqsadimiz sizni turli xil, xalqaro auditoriya uchun chinakam integratsiyalashgan va foydalanuvchiga qulay veb-tajribalarni yaratish uchun bilim bilan ta'minlashdir.
Web Share Target API: Veb-ilovalar uchun inqilobiy o'zgarish
Web Share Target API nima?
Web Share Target API — bu veb-ilovalar, xususan Progressiv Veb-Ilovalar (PWA) foydalanuvchi operatsion tizimidagi boshqa ilovalardan ulashilgan ma'lumotlarni qabul qilish imkonini beruvchi veb standartidir. Foydalanuvchi ulashish harakatini boshlaganda (masalan, brauzerda, foto galereyada yoki boshqa ilovada "ulashish" tugmasini bosganda), operatsion tizim odatda ushbu ulashilgan kontentni qabul qila oladigan o'rnatilgan ilovalar ro'yxatini taqdim etadi. Web Share Target API yordamida sizning PWA-ingiz o'sha ilovalardan biri bo'lishi mumkin, bu esa foydalanuvchilarga sizning xizmatingizga ma'lumotlarni yuborish uchun to'g'ridan-to'g'ri va integratsiyalashgan yo'lni taklif etadi.
Nima uchun bu zamonaviy veb-ilovalar uchun muhim?
Ushbu API ning ahamiyatini, ayniqsa global veb kontekstida, ortiqcha baholab bo'lmaydi:
- Yaxshilangan foydalanuvchi tajribasi: Bu noqulay nusxalash-joylashtirish yoki qo'lda yuklashlarni yo'q qiladi, ish jarayonlarini soddalashtiradi va PWA-ingizni operatsion tizimning tabiiy qismi kabi his qilishiga yordam beradi. Bu butun dunyo bo'ylab foydalanuvchilarni saqlab qolish va ularning mamnuniyati uchun juda muhimdir.
- Jalb etishning ortishi: Mahalliy ulashish oynalarida paydo bo'lish orqali sizning PWA-ingiz ko'rinuvchanlik va topiluvchanlikka erishadi, bu esa foydalanuvchilarni u bilan tez-tez o'zaro aloqada bo'lishga undaydi. Foydalanuvchilar asosan mobil qurilmalar orqali internetga kiradigan bozorlarda bu to'g'ridan-to'g'ri integratsiya bebahodir.
- Mahalliy ilovalar bilan xususiyatlar tengligi: Ushbu API veb va mahalliy ilovalar o'rtasidagi xususiyatlar bo'shlig'ini sezilarli darajada qisqartiradi, dasturchilarga tizim integratsiyasi bo'yicha mahalliy hamkasblari bilan raqobatlasha oladigan veb-tajribalarini yaratish imkonini beradi. Bu, ayniqsa, rivojlanayotgan bozorlarda kichik biznes uchun mahalliy ilovalarni ishlab chiqish qimmatga tushishi mumkin bo'lgan holatlarda dolzarbdir.
- Oflayn imkoniyatlar: Service Worker bilan birgalikda, ulashilgan ma'lumotlar foydalanuvchi oflayn bo'lsa yoki ishonchsiz tarmoq aloqasiga ega bo'lsa ham qayta ishlanishi mumkin, bu dunyoning ko'p joylarida keng tarqalgan holat.
- Ishqalanishning kamayishi: Foydalanuvchilar uchun jarayon sodda va intuitivdir. Dasturchilar uchun esa bu ma'lumotlarni qabul qilishning standartlashtirilgan usulini taqdim etadi, bu esa maxsus integratsiyalar yoki platformaga xos yechimlarga bo'lgan ehtiyojni kamaytiradi.
Veb Ulashish Imkoniyatlarining Evolyutsiyasi
Tarixan veb-ilovalar alohida edi. Veb-ilovadan kontentni ulashish murakkab ijtimoiy media integratsiyalari yoki qo'lda nusxalash harakatlarini anglatardi. Web Share API ning joriy etilishi birinchi katta qadam bo'ldi, bu veb-ilovalarga o'zlaridan kontentni ulashish uchun mahalliy ulashish oynasini ishga tushirish imkonini berdi. Web Share Target API bu doirani yakunlaydi, veb-ilovalarga kontentni qabul qilish imkonini beradi va shu bilan veb-platforma uchun haqiqiy ikki tomonlama ulashish imkoniyatlarini yaratadi. Bu evolyutsiya vebning tizim bilan chuqurroq integratsiyalashuvi va global miqyosda yanada uzluksiz foydalanuvchi tajribasi sari uzluksiz sayohatini ko'rsatadi.
Asosiy Tushuncha: Ulashish Nishoniga Aylanish
Web Share Target API-ni chinakam anglash uchun uning veb-ilovalar operatsion tizim bilan qanday o'zaro aloqada bo'lishi borasidagi fundamental o'zgarishni tushunish muhim.
Veb-ilovalar An'anaviy Ravishda Kiruvchi Ma'lumotlarni Qanday Qayta Ishlagan
Web Share Target API-dan oldin, agar veb-ilovaga ma'lumotlarni qabul qilish kerak bo'lsa, usullar asosan qo'lda va noqulay edi. Foydalanuvchilar odatda:
- Nusxalash va Joylashtirish: Matn yoki URL manzilini bir manbadan qo'lda nusxalab, veb-ilova ichidagi forma maydoniga joylashtirar edilar.
- Yuklab olish va Yuklash: Faylni (masalan, rasm yoki hujjat) o'z qurilmalariga yuklab olib, so'ngra veb-ilovaga o'tib, yuklash tugmasini topib, faylni o'zlarining mahalliy xotirasidan tanlar edilar.
- Brauzer Kengaytmalari: Ba'zi hollarda, maxsus brauzer kengaytmalari cheklangan "yuborish" funksiyasini taklif qilishi mumkin edi, ammo ular tizim darajasida emas edi va foydalanuvchilardan qo'shimcha dasturiy ta'minot o'rnatishni talab qilar edi.
Bu usullar sezilarli to'siqlarni yuzaga keltirgan, bir nechta qadamlarni qo'shgan va ko'pincha foydalanuvchining ish oqimini buzib, hafsalasizlik va voz kechishga olib kelgan. Ular, shuningdek, foydalanuvchilar zamonaviy dasturiy ta'minotdan kutgan integratsiyalashgan tuyg'uni bermagan.
Paradigma O'zgarishi: Web Share Target Tizim Darajasidagi Ishlov Beruvchi Sifatida
Web Share Target API bu paradigmani butunlay o'zgartiradi. Qo'lda kiritishni passiv kutish o'rniga, sizning PWA-ingiz o'zini operatsion tizimda ma'lum turdagi ulashilgan kontent uchun ishlov beruvchi sifatida faol ravishda ro'yxatdan o'tkazishi mumkin. Boshqa ilova (mahalliy yoki veb) ulashish harakatini boshlaganda va kontent sizning PWA-ingiz ro'yxatdan o'tgan turga mos kelsa, PWA-ingiz tizimning ulashish dialogida variant sifatida paydo bo'ladi. Bu sizning veb-ilovangizni mahalliy ilova bilan bir xil tizim integratsiyasi darajasiga ko'taradi.
Foydalanuvchi ulashish menyusidan sizning PWA-ingizni tanlaganda, brauzer PWA-ingizni ishga tushiradi (yoki agar ochiq bo'lsa, oldinga chiqaradi) va ulashilgan ma'lumotlarni ilovangiz ichidagi oldindan belgilangan URL manziliga yetkazib beradi. Bu yetkazib berish standart HTTP so'rovi (GET yoki POST) orqali amalga oshiriladi, bu esa PWA-ingizga kiruvchi ma'lumotlarni har qanday boshqa forma yuborilishi yoki API chaqiruvi kabi qayta ishlash imkonini beradi.
Web Share API (Veb-ilovadan Ulashish) va Web Share Target API (Veb-ilovaga Ulashish) O'rtasidagi Farq
Web Share API-ni Web Share Target API bilan adashtirmaslik juda muhim, chunki ular bir-birini to'ldiruvchi, ammo alohida maqsadlarga xizmat qiladi:
- Web Share API: Bu API sizning veb-ilovangizga ulashish harakatini boshlash imkonini beradi. Foydalanuvchi PWA-ingiz ichidagi "ulashish" tugmasini bosganda, siz
navigator.share()usulidan foydalanib operatsion tizimning ulashish oynasini ochishingiz mumkin, bu foydalanuvchiga PWA-ingizdan boshqa o'rnatilgan ilovalarga (shu jumladan mahalliy ilovalar yoki ulashish nishonlari sifatida ro'yxatdan o'tgan boshqa PWA-larga) kontentni ulashish imkonini beradi. - Web Share Target API: Bu bizning qo'llanmamizning asosiy mavzusi. Bu sizning veb-ilovangizga boshqa ilovalardan ulashilgan kontentni qabul qilish imkonini beradi. Sizning PWA-ingiz ulashish uchun "nishon"ga aylanadi va tizimning ulashish oynasida PWA-ingizga ma'lumot yuborish uchun variant sifatida paydo bo'ladi.
Birgalikda bu ikki API veb uchun to'liq va uzluksiz ulashish ekotizimini yaratadi, bu esa kontentning veb-ilovalaringizga ham kirishiga, ham chiqishiga imkon beradi va raqamli landshaft bo'ylab o'zaro muvofiqlikni oshiradi.
Web Share Targetni Joriy Etish Uchun Dastlabki Shartlar
Veb-ilovangizni ulashish nishoni sifatida ro'yxatdan o'tkazishdan oldin, u ma'lum fundamental mezonlarga, asosan Progressiv Veb-Ilovalar (PWA) bilan bog'liq bo'lganlarga javob berishi kerak. Bu talablar foydalanuvchilar uchun ishonchli, xavfsiz va integratsiyalashgan tajribani ta'minlaydi.
Progressiv Veb-Ilova (PWA) Talablari
Web Share Target API PWA ekotizimi bilan uzviy bog'liq. Ushbu xususiyatdan foydalanish uchun sizning veb-ilovangiz asosan PWA bo'lishi kerak, ya'ni unga quyidagilar kerak:
- Veb Manifest Fayli: Bu JSON fayli (`manifest.json` keng tarqalgan nom) sizning PWA-ingizning yuragidir. U brauzerga ilovangiz haqida ma'lumot beradi, masalan uning nomi, piktogrammalari, boshlang'ich URL manzili, displey rejimi va, eng muhimi, biz batafsil muhokama qiladigan
share_targetkonfiguratsiyasi. - Service Worker: Service Worker — bu brauzer va tarmoq o'rtasida proksi vazifasini bajaruvchi JavaScript fayli. U tarmoq so'rovlarini ushlab qolish, oflayn imkoniyatlarni yoqish va push-bildirishnomalar kabi xususiyatlarni taqdim etish uchun zarur. Web Share Target API uchun Service Worker kiruvchi ulashilgan ma'lumotlarni qayta ishlashda, ayniqsa murakkab ma'lumot turlari bilan ishlashda yoki hatto oflayn rejimda ham silliq foydalanuvchi tajribasini ta'minlashda muhim rol o'ynaydi.
- HTTPS: Veb-ilovangiz HTTPS orqali taqdim etilishi kerak. Bu barcha zamonaviy veb imkoniyatlari, jumladan Service Workerlar va PWA o'rnatilishi uchun muhokama qilinmaydigan xavfsizlik talabidir. HTTPS sizning PWA-ingizga ulashilgan ma'lumotlarning shifrlanishini va o'zgartirishlardan himoyalanganligini ta'minlaydi, bu esa global miqyosda foydalanuvchilar ishonchini oshiradi.
Ushbu asosiy PWA elementlarisiz, brauzer ilovangizni haqiqiy ulashish nishoni sifatida tanimaydi va u tizimning ulashish menyusida paydo bo'lmaydi. Ushbu dastlabki shartlarning bajarilishini ta'minlash uzluksiz ulashishni yoqish yo'lidagi birinchi va eng muhim qadamdir.
Brauzer Qo'llab-quvvatlashi va Muvofiqlik Masalalari (Global Perspektiva)
Web Share Target API kuchli standart bo'lsa-da, brauzer qo'llab-quvvatlashi farq qilishi mumkin. Buni global auditoriya uchun hisobga olish muhim, chunki turli hududlarda turli dominant brauzerlar va qurilma ekotizimlari bo'lishi mumkin:
- Chromium-asosidagi Brauzerlar: Google Chrome, Microsoft Edge, Opera, Brave va boshqa Chromium-asosidagi brauzerlar Android, Chrome OS va ish stoli platformalarida odatda Web Share Target API-ni mustahkam qo'llab-quvvatlaydi. Bu keng qo'llab-quvvatlash global internet foydalanuvchilarining katta qismini, ayniqsa Android keng tarqalgan hududlarda qamrab oladi.
- Safari (iOS/macOS): Apple'ning iOS va macOS'dagi Safari brauzeri tarixan Chromium brauzerlariga qaraganda cheklanganroq PWA qo'llab-quvvatlashiga ega. Safari Web Share API-ni (veb-ilovadan *ulashish*) qo'llab-quvvatlasa-da, uning Web Share Target API-ni (veb-ilovaga *ulashish*) qo'llab-quvvatlashi ma'lum kontekstlarda kamroq keng qamrovli yoki mavjud emas. Dasturchilar ushbu platformalardagi foydalanuvchilar uchun puxta sinovdan o'tkazishlari va potentsial zaxira yechimlarini taqdim etishlari kerak.
- Firefox: Mozilla Firefox ham PWA imkoniyatlari ustida ishlamoqda, ammo uning Web Share Target API-ni qo'llab-quvvatlashi ham farq qilishi mumkin. Eng so'nggi MDN Veb Hujjatlarini tekshirish va o'z dasturingizni turli operatsion tizimlardagi Firefox'da sinab ko'rish tavsiya etiladi.
Global Strategiya: Haqiqatan ham global ilova uchun bosqichma-bosqich pasayishni (graceful degradation) amalga oshirish oqilona. Web Share Target API ideal tajribani taqdim etsa-da, ilovangiz qo'llab-quvvatlanmaydigan brauzerlar yoki platformalarda ham qabul qilinadigan darajada ishlashini ta'minlang. Bu foydalanuvchilarni qo'lda nusxalash-joylashtirishga undash yoki muqobil yuklash mexanizmlarini taqdim etish, ularga bu kengaytirilgan xususiyat qo'llab-quvvatlanadigan muhitlarda mavjudligini aniq tushuntirishni o'z ichiga olishi mumkin.
Xavfsizlik Kontekstlarini Tushunish
Ulashilgan ma'lumotlar bilan ishlashda xavfsizlik eng muhim masaladir. Web Share Target API foydalanuvchi va ilovangizni himoya qilish uchun qat'iy xavfsizlik kontekstlarida ishlaydi:
- HTTPS Talabi: Yuqorida aytib o'tilganidek, HTTPS majburiydir. Bu uzatish paytida ulashilgan ma'lumotlarning yaxlitligi va maxfiyligini himoya qiladi.
- Bir xil manba siyosati (Same-Origin Policy): Ma'lumotlar sizning PWA-ingizga ulashilganda, u ilovangiz manbasining xavfsizlik kontekstida qayta ishlanadi. Bu shuni anglatadiki, sizning skriptingiz aniq ruxsatlarsiz boshqa manbalardagi maxfiy resurslarga to'g'ridan-to'g'ri kira olmaydi, bu saytlararo skripting (XSS) va boshqa hujumlarning oldini oladi.
- Kiruvchi ma'lumotlarni tozalash (Input Sanitization): Ma'lumotlar "ishonchli" tizim ulashishidan kelgan bo'lsa-da, u boshqa ilovadan kelib chiqadi. Dasturchilar har doim barcha kiruvchi ulashilgan ma'lumotlarni qayta ishlash yoki ko'rsatishdan oldin tozalashlari va tekshirishlari kerak. Bu zararli kontentning ilovangizga yoki ma'lumotlar bazasiga kiritilishining oldini oladi. Masalan, agar HTML bo'lishi mumkin bo'lgan matn ulashilsa, XSS zaifliklarining oldini olish uchun uni to'g'ri ekranklash kerakligini ta'minlang.
Ushbu xavfsizlikning eng yaxshi amaliyotlariga rioya qilish orqali siz Web Share Target dasturingiz mustahkam va butun dunyo foydalanuvchilari uchun xavfsiz ekanligini ta'minlaysiz.
Veb Manifestda Ilovani Qadamma-qadam Ro'yxatdan O'tkazish
PWA-ni ulashish nishoni sifatida ro'yxatdan o'tkazishning asosi uning Veb Manifest faylida yotadi. Ushbu JSON fayli brauzer va operatsion tizimga ilovangiz qanday ishlashi va qanday imkoniyatlarni taklif qilishi haqida ma'lumot beradi. Biz aynan share_target a'zosiga e'tibor qaratamiz.
share_target A'zosi
share_target a'zosi sizning manifest.json faylingiz ichidagi obyekt bo'lib, PWA-ingiz ulashilgan ma'lumotlarni qanday qabul qilishini belgilaydi. U ma'lumotlar yuboriladigan URL manzilini, HTTP usulini, kodlash turini va kiruvchi ma'lumotlar parametrlarining standart ulashish maydonlariga qanday mos kelishini belgilaydi.
Bu yerda asosiy tuzilma keltirilgan:
{
"name": "Mening Ajoyib PWA Ilovam",
"short_name": "Mening PWA",
"start_url": ".",
"display": "standalone",
"icons": [
{ "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }
],
"share_target": {
"action": "/share-target/",
"method": "GET",
"enctype": "application/x-www-form-urlencoded",
"params": {
"title": "name",
"text": "description",
"url": "link"
}
}
}
Keling, share_target ichidagi asosiy xususiyatlarni tahlil qilaylik:
action: PWA-ingiz ichidagi kiruvchi ulashilgan ma'lumotlarni qayta ishlaydigan URL.method: Ma'lumotlarniactionURL-ga yuborish uchun ishlatiladigan HTTP usuli (GET yoki POST).enctype:actionURL-ga yuborilgan ma'lumotlarning kodlash turi.params: Standart ulashilgan ma'lumotlar maydonlarini (title,text,url,fileskabi) ilovangiz HTTP so'rovida kutadigan nomlarga moslashtiradigan obyekt.
action Maydoni: Kirish Nuqtasi
action maydoni PWA-ingiz ichidagi ulashilgan ma'lumotlarni qabul qiladigan va qayta ishlaydigan URL manzilini belgilaydi. Bu URL start_url-ga nisbiy yoki mutlaq URL bo'lishi mumkin, ammo PWA ko'chiriluvchanligini yaxshilash uchun odatda nisbiy URL-lar afzal ko'riladi.
Misol:
{
"share_target": {
"action": "/handle-share/",
// ... boshqa xususiyatlar
}
}
Ushbu misolda, foydalanuvchi PWA-ingizga kontent ulashganda, brauzer https://your-pwa.com/handle-share/ manziliga o'tadi (https://your-pwa.com/ sizning PWA manbangiz deb faraz qilsak). Sizning service worker-ingiz yoki ushbu URL-da yuklangan sahifa ulashilgan ma'lumotlarni chiqarib olish va qayta ishlash uchun mas'ul bo'ladi.
E'tiborga olinadigan jihatlar:
- Foydalanuvchi tajribasi: Yaxshi kirish tajribasini ta'minlaydigan
actionURL manzilini tanlang. Ko'pincha, bu ilovangiz ichidagi maxsus "yangi yozuv" yoki "yuklash" sahifasi bo'lishi mumkin, u ulashilgan ma'lumotlar bilan oldindan to'ldirilgan bo'ladi. - Xavfsizlik:
actiontomonidan belgilangan so'nggi nuqtaning xavfsizligi ta'minlanganligiga va potentsial ishonchsiz ma'lumotlarni qayta ishlashga qodirligiga ishonch hosil qiling.
method Maydoni: Ma'lumotlarni Uzatish uchun HTTP Usuli
method maydoni ulashilgan ma'lumotlarning action URL-ingizga qanday yuborilishini belgilaydi. Sizda ikkita asosiy tanlov bor:
GET: Ma'lumotlarni URL so'rov parametrlari sifatida yuboradi.POST: Ma'lumotlarni HTTP so'rovi tanasida yuboradi.
GET qachon ishlatiladi:
- Oddiy ma'lumotlar uchun: Kichik hajmdagi matnlar, yagona URL-lar yoki sarlavhalar.
- Ulashish harakati idempotent bo'lganda (ya'ni, harakatni takrorlash qo'shimcha yon ta'sirlarga ega bo'lmaydi, masalan, shunchaki ma'lumotlarni ko'rsatish).
- Misol: URL qabul qiluvchi xatcho'p PWA.
{
"share_target": {
"action": "/bookmark/add",
"method": "GET",
"enctype": "application/x-www-form-urlencoded",
"params": { "url": "link", "title": "name" }
}
}
GET bilan URL quyidagicha ko'rinishda bo'ladi: /bookmark/add?link=https%3A%2F%2Fexample.com&name=Example%20Page.
POST qachon ishlatiladi:
- Murakkab yoki katta hajmdagi ma'lumotlar uchun: Fayllar (rasmlar, hujjatlar), keng matnlar.
- Ulashish harakati yon ta'sirlarga ega bo'lganda (masalan, yangi yozuv yaratish, fayl yuklash).
- Misol: Rasm faylini qabul qiluvchi foto tahrirlovchi PWA.
{
"share_target": {
"action": "/image-upload/",
"method": "POST",
"enctype": "multipart/form-data",
"params": { "files": [{ "name": "photos", "accept": ["image/png", "image/jpeg"] }] }
}
}
GET va POST ning xavfsizlik oqibatlari:
GET so'rovlari oddiy ma'lumotlar uchun mos bo'lsa-da, ularning cheklovlari bor: URL uzunligi brauzerlar va serverlar tomonidan cheklanishi mumkin va maxfiy ma'lumotlar odatda URL so'rov satrida oshkor qilinmasligi kerak, chunki ular jurnallarga yozilishi yoki keshlantirilishi mumkin. POST so'rovlari kattaroq yuklarni yuborish va ma'lumotlar maxfiyligi muhim bo'lganda afzalroqdir, chunki ma'lumotlar so'rov tanasida joylashgan bo'ladi.
enctype Maydoni: Ulashilgan Ma'lumotlarni Kodlash
enctype (kodlash turi) maydoni ma'lumotlar action URL-ingizga yuborilayotganda qanday kodlanishini belgilaydi. Bu kiruvchi ma'lumotlarni to'g'ri tahlil qilish uchun juda muhim.
application/x-www-form-urlencoded: Bu HTML formalari uchun standart kodlash bo'lib, oddiy matn va URL ma'lumotlarini, ayniqsaGETso'rovlari bilan yuborish uchun mos keladi. U maxsus belgilar va bo'shliqlarni kodlaydi, bu esa ma'lumotlarni URL parametrlari yoki so'rov tanalari uchun xavfsiz qiladi.multipart/form-data: Bu kodlash fayllarni (rasmlar, videolar yoki hujjatlar kabi) boshqa matn ma'lumotlari bilan birga yuborishingiz kerak bo'lganda zarur. U ikkilik ma'lumotlar va kattaroq yuklarni uzatish imkonini beradi.multipart/form-datadan foydalanganda, siz albattaPOSTusulidan foydalanishingiz kerak.
application/x-www-form-urlencoded bilan misol:
{
"share_target": {
"action": "/create-note/",
"method": "POST",
"enctype": "application/x-www-form-urlencoded",
"params": {
"title": "subject",
"text": "content"
}
}
}
multipart/form-data bilan misol:
{
"share_target": {
"action": "/upload-media/",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"title": "description",
"files": [
{ "name": "media", "accept": ["image/*", "video/*"] }
]
}
}
}
params Maydoni: Kiruvchi Ma'lumotlarni Moslashtirish
params obyekti sizning ilovangiz kutadigan parametr nomlariga kiruvchi ulashilgan ma'lumotlar maydonlari qanday mos kelishini belgilaydigan joydir. Bu juda moslashuvchan bo'lib, kiruvchi ma'lumotlar tuzilmasini mavjud ilova mantiqangizga moslashtirish imkonini beradi.
Matn va URL-larni Qayta Ishlash (`text`, `url`, `title`)
Bular eng ko'p ulashiladigan ma'lumot turlaridir. Web Share Target API ular uchun standart kalitlarni taqdim etadi:
text: Ulashilayotgan matnning asosiy qismini ifodalaydi.url: Ulashilayotgan URL manzilini ifodalaydi.title: Ulashilgan kontent bilan bog'liq sarlavhani ifodalaydi (masalan, veb-sahifa sarlavhasi).
Matn/URL Ulashish uchun Manifest JSON Misoli:
{
"share_target": {
"action": "/new-bookmark",
"method": "GET",
"enctype": "application/x-www-form-urlencoded",
"params": {
"title": "name",
"text": "description",
"url": "linkToShare"
}
}
}
Ushbu konfiguratsiyada, agar foydalanuvchi veb-sahifani ulashsa, brauzer uning sarlavhasini, URL manzilini va tanlangan matnni chiqarib oladi. Bular mos ravishda name, description va linkToShare nomlariga moslashtiriladi va /new-bookmark manziliga yuboriladigan GET so'rovida so'rov parametrlari sifatida qo'shiladi.
Ma'lumotlarni Chiqarib Olish uchun JavaScript Misoli (nishon sahifasida yoki Service Workerda):
// Nishon sahifasida GET so'rovi uchun (masalan, /new-bookmark)
const urlParams = new URLSearchParams(window.location.search);
const title = urlParams.get('name');
const description = urlParams.get('description');
const link = urlParams.get('linkToShare');
console.log('Ulashilgan Sarlavha:', title);
console.log('Ulashilgan Tavsif:', description);
console.log('Ulashilgan URL:', link);
// Keyin bu o'zgaruvchilarni forma maydonlarini to'ldirish, ma'lumotlarni saqlash va hokazolar uchun ishlatasiz.
Fayllarni Qayta Ishlash (`files`)
Fayllarni (rasmlar, hujjatlar, videolar) ulashish kuchli imkoniyatdir. files parametrini e'lon qilganda, siz obyektlar massivini taqdim etishingiz kerak, bunda har bir obyekt fayl kiritishini belgilaydi:
name: Fayl(lar)ni o'z ichiga oladigan forma maydonining nomi. Buni siz JavaScript-da fayl(lar)ga kirish uchun ishlatasiz (masalan,formData.get('myFiles')).accept: Ilovangiz qabul qila oladigan MIME turlari yoki fayl kengaytmalari massivi. Bu operatsion tizimga PWA-ingizga qaysi fayllarni ulashish mumkinligini filtrlashga yordam beradi va foydalanuvchiga to'g'ri fayl turini tanlashga yordam beradi.image/png,image/jpeg,application/pdfkabi umumiy MIME turlarini yokiimage/*,video/*kabi kengroq kategoriyalarni ishlating.
Eslatma: Fayl ulashish albatta method: "POST" va enctype: "multipart/form-data" ni talab qiladi.
Fayl Ulashish uchun Manifest JSON Misoli (masalan, rasm tahrirlovchisi):
{
"share_target": {
"action": "/edit-photo",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"files": [
{
"name": "image",
"accept": ["image/png", "image/jpeg", "image/webp"]
}
]
}
}
}
Ushbu konfiguratsiya brauzerga /edit-photo manzilidagi PWA-ingiz rasm faylini qabul qila olishini va unga image forma maydoni nomi orqali kirish mumkinligini bildiradi.
Nishon Sahifasida Fayllarni Qayta Ishlash uchun JavaScript Misoli (yoki Service Workerda):
// Nishon sahifasida POST so'rovi uchun (masalan, /edit-photo)
// Bu PWA ishga tushirilgan va ulashilgan ma'lumotlar POST so'rovi sifatida kelgan deb faraz qiladi.
// Mustahkamlik uchun buni odatda Service Worker-da tahlil qilasiz.
async function handleSharedFiles() {
const formData = await new Request(window.location.href, {
method: 'POST',
body: new URLSearchParams(window.location.search) // Agar GET bo'lsa, buni parametrlar uchun ishlating
// multipart/form-data bilan POST uchun haqiqiy forma ma'lumotlari so'rov tanasidan o'qilishi kerak
// Bu misol tushuntirish uchun soddalashtirilgan. Haqiqiy ishlov berish Service Worker-da bo'ladi.
}).formData();
const imageFile = formData.get('image'); // 'image' manifestdagi params.files dagi 'name' ga mos keladi
if (imageFile instanceof File) {
console.log('Qabul qilingan fayl:', imageFile.name, imageFile.type, imageFile.size);
// Rasm faylini qayta ishlang, masalan, uni ko'rsating, yuklang, filtrlar qo'llang.
const imgElement = document.createElement('img');
imgElement.src = URL.createObjectURL(imageFile);
document.body.appendChild(imgElement);
} else {
console.log('Rasm fayli qabul qilinmadi yoki parametr nomi noto\'g\'ri.');
}
}
// Agar sahifa ulashish nishoni sifatida yuklangan bo'lsa, ishlov beruvchini ishga tushiring
if (window.location.pathname.startsWith('/edit-photo')) {
handleSharedFiles();
}
Nishon sahifasining skriptida POST so'rovlarini to'g'ridan-to'g'ri qayta ishlash uchun yuqoridagi mijoz tomonidagi JavaScript cheklangan. Ayniqsa, fayllar va oflayn qo'llab-quvvatlash uchun yanada mustahkam va PWA-ga mos yondashuv Service Worker-dagi fetch hodisasini qayta ishlashni o'z ichiga oladi, bu keyingi bo'limda batafsil yoritilgan.
Aralash Kontentni Qayta Ishlash
Siz matn, URL va fayllarni bitta share_target konfiguratsiyasida birlashtirishingiz mumkin. Bu boy kontentni talab qiladigan ilovalar uchun ideal, masalan, foydalanuvchilarga sharhlar va ilova qilingan hujjatlar bilan veb-sahifani ulashish imkonini beradigan samaradorlik vositasi.
Murakkab Ssenariylar uchun Manifest Konfiguratsiyasi Misoli:
{
"share_target": {
"action": "/new-entry",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"title": "entryTitle",
"text": "entryContent",
"url": "sourceLink",
"files": [
{ "name": "attachments", "accept": ["image/*", "application/pdf", ".doc", ".docx"] }
]
}
}
}
Bu yerda sizning PWA-ingiz sarlavha, matn, URL va potentsial ravishda bir nechta ilovalarni (rasmlar, PDF-lar, Word hujjatlari) /new-entry manziliga yuborilgan bitta POST so'rovi tarkibida qabul qiladi. Kiruvchi FormData obyektidagi attachments maydoni keyin File obyektlari massivini o'z ichiga oladi.
Fayllar uchun accept ni belgilashda foydalanuvchi va operatsion tizimga yo'l-yo'riq ko'rsatish uchun iloji boricha aniqroq bo'ling. image/* kabi yovvoyi belgilaridan keng rasm qo'llab-quvvatlashi uchun foydalanish maqbuldir. Shuningdek, .doc kabi fayl kengaytmalarini MIME turlari bilan birga belgilashingiz mumkin.
Service Workerning Share Targetdagi Roli
Veb Manifest PWA-ingizning ulashish nishoni sifatida *qanday* ro'yxatdan o'tishini belgilasa-da, Service Worker haqiqiy sehr sodir bo'ladigan joydir, ayniqsa mustahkam ma'lumotlarni qayta ishlash, oflayn imkoniyatlar va optimallashtirilgan foydalanuvchi tajribasi uchun. U oflayn ehtiyojlarsiz oddiy GET so'rovlari uchun qat'iy majburiy emas, lekin fayllar, POST so'rovlari yoki barqaror foydalanuvchi tajribasini o'z ichiga olgan har qanday narsa uchun Service Worker juda muhim.
Nima uchun Service Worker mustahkam ishlov berish uchun muhim?
Service Worker Web Share Target uchun bir nechta muhim afzalliklarni taqdim etadi:
- So'rovlarni ushlab qolish: Service Worker ulashilgan ma'lumotlarni o'z ichiga olgan HTTP so'rovini (sizning
actionURL-ingizga) brauzerning tarmoq stekiga yetib bormasdan oldin ushlab qolishi mumkin. Bu sizga ma'lumotlarni fonda qayta ishlash imkonini beradi, buning uchun butun ilova interfeysini yuklash shart emas. - Oflayn qayta ishlash: Bu PWA-ingizga foydalanuvchi tarmoqqa ulanmagan bo'lsa ham ulashilgan ma'lumotlarni qayta ishlash imkonini beradi. Service Worker ma'lumotlarni IndexedDB yoki boshqa doimiy saqlash omboriga saqlashi va aloqa tiklanganda uni qayta ishlashi mumkin. Bu internet aloqasi uzilishli bo'lgan hududlarda juda muhim.
- Fon operatsiyalari: Katta fayllar yoki murakkab qayta ishlash uchun Service Worker operatsiyalarni fonda bajarishi mumkin, bu esa foydalanuvchiga darhol oldingi vazifasiga qaytish imkonini beradi, shu bilan birga PWA-ingiz ulashilgan kontentni interfeysni bloklamasdan qayta ishlaydi.
- Uzluksiz foydalanuvchi tajribasi: Ma'lumotlarni fonda qayta ishlash yoki darhol fikr-mulohaza berish orqali Service Worker PWA-ingizning tezroq, javob beruvchanroq tuyg'usiga hissa qo'shadi va ulashish jarayonini silliqroq qiladi.
fetch Hodisasi va Share Target Ma'lumotlari
Service Worker fetch hodisasi tinglovchisi yordamida tarmoq so'rovlarini ushlab qoladi. Ulashish nishoni harakati ishga tushirilganda va PWA-ingiz ishga tushganda, action URL-ingizga bo'lgan so'rov Service Worker orqali o'tadi.
Kiruvchi GET Ma'lumotlarini Tahlil qilish:
GET so'rovlari uchun ulashilgan ma'lumotlar URL-ning so'rov satrida bo'ladi. Buni URLSearchParams yordamida tahlil qilishingiz mumkin.
// service-worker.js faylingizda
self.addEventListener('fetch', (event) => {
const url = new URL(event.request.url);
// So'rov bizning ulashish nishoni action URL-imiz uchun va GET so'rovi ekanligini tekshiring
if (url.pathname === '/handle-share-get/' && event.request.method === 'GET') {
event.respondWith(async function() {
const params = url.searchParams; // So'rov parametrlarini oling
const title = params.get('name');
const text = params.get('description');
const sharedUrl = params.get('link');
console.log('GET orqali ulashildi:', { title, text, sharedUrl });
// Misol: Ma'lumotlarni saqlang va tasdiqlash sahifasiga yo'naltiring
await caches.open('share-data').then(cache => cache.put('/shared-data', new Response(JSON.stringify({ title, text, sharedUrl }))));
return Response.redirect('/share-success/?message=content_shared', 303);
}());
return; // Muhim: bu so'rov uchun standart fetch xatti-harakatini oldini oling
}
// ... boshqa fetch hodisasini qayta ishlash (keshlash va h.k.)
});
Kiruvchi POST Ma'lumotlarini Tahlil qilish (shu jumladan multipart/form-data):
POST so'rovlari uchun, ayniqsa fayllar uchun multipart/form-data bo'lganlarda, so'rov tanasini tahlil qilish uchun event.request.formData() dan foydalanishingiz kerak bo'ladi. Bu usul FormData obyektini qaytaradi, uni keyin siz kalit orqali takrorlashingiz yoki kirishingiz mumkin.
// service-worker.js faylingizda
self.addEventListener('fetch', (event) => {
const url = new URL(event.request.url);
// So'rov bizning ulashish nishoni action URL-imiz uchun va POST so'rovi ekanligini tekshiring
if (url.pathname === '/handle-share-post/' && event.request.method === 'POST') {
event.respondWith(async function() {
try {
const formData = await event.request.formData(); // So'rov tanasini tahlil qiling
const title = formData.get('entryTitle');
const text = formData.get('entryContent');
const sharedUrl = formData.get('sourceLink');
const files = formData.getAll('attachments'); // 'attachments' manifestdagi params.files dagi 'name' ga mos keladi
console.log('POST orqali ulashildi:', { title, text, sharedUrl, files: files.map(f => f.name) });
// Misol: Fayllarni qayta ishlang (masalan, backendga yuklang, IndexedDB ga saqlang)
for (const file of files) {
if (file instanceof File) {
console.log(`Faylni qayta ishlash: ${file.name} (${file.type})`);
// Faylni qayta ishlash mantig'ini bu yerda amalga oshiring
// Masalan, oflayn qayta ishlash uchun uni IndexedDB da saqlang
// Yoki uni backend API-ga yuboring
}
}
// Muvaffaqiyat sahifasiga yo'naltiring yoki darhol fikr-mulohaza bering
return Response.redirect('/share-success/?message=content_and_files_shared', 303);
} catch (error) {
console.error('Ulashilgan ma\'lumotlarni tahlil qilishda xato:', error);
// Xatolik sahifasiga yo'naltiring yoki bildirishnoma ko'rsating
return Response.redirect('/share-error/?error=data_processing_failed', 303);
}
}());
return;
}
// ... boshqa fetch hodisasini qayta ishlash
});
Service Worker-da qayta ishlash uchun muhim mulohazalar:
event.respondWith(): Bu juda muhim. Bu brauzerga sizning Service Worker-ingiz tarmoq so'rovini qayta ishlayotganini bildiradi. Agar siz uni chaqirmasangiz, brauzer o'zining standart fetch xatti-harakatini davom ettiradi, bu esa bo'sh sahifani yuklashi yoki ma'lumotlarni mo'ljallanganidek qayta ishlamasligi mumkin.Response.redirect(url, status): Ulashilgan ma'lumotlarni muvaffaqiyatli qayta ishlagandan so'ng, foydalanuvchini PWA-ingiz ichidagi yanada mazmunli sahifaga (masalan, muvaffaqiyat xabari, yangi qo'shilgan elementlar ro'yxati yoki bosh sahifa) yo'naltirish odatiy amaliyotdir. POST so'rovidan keyin yo'naltirishlar uchun odatda303 See Otherholat kodi tavsiya etiladi, chunki u mijozga belgilangan URL-ga yangi GET so'rovini bajarishni aytadi.- Xatolarni qayta ishlash: Ma'lumotlarni tahlil qilish yoki qayta ishlash paytida xatolarni muvaffaqiyatli boshqarish uchun Service Worker-ning fetch ishlovchisida har doim mustahkam
try...catchbloklarini qo'shing. Foydalanuvchiga qulay xato xabarlarini taqdim eting yoki xatolik sahifasiga yo'naltiring.
Oflayn Ulashish Imkoniyatlari
Ulashish nishonini qayta ishlash uchun Service Worker-dan foydalanishning eng jozibali sabablaridan biri uning foydalanuvchi oflayn bo'lganda ham ma'lumotlarni boshqarish qobiliyatidir. Bu, ayniqsa, ishonchsiz internet aloqasi bo'lgan hududlarda qimmatlidir.
Oflayn Ulashish Strategiyasi:
- Ushlab qolish va saqlash: Service Worker-ning
fetchishlovchisida, ulashilgan ma'lumotlar kelganda (ayniqsa POST orqali), uni darhol backendga yuborishga urinish o'rniga, uni IndexedDB kabi doimiy mijoz tomonidagi saqlash mexanizmida saqlang. - Darhol fikr-mulohaza berish: Ma'lumotlarni saqlagandan so'ng, foydalanuvchini darhol muvaffaqiyat sahifasiga yo'naltiring va ularga kontentlari saqlanganligi va onlayn bo'lganda qayta ishlanishi haqida xabar bering.
- Fon sinxronizatsiyasi: Tarmoq ulanishini kuzatish uchun Background Sync API (yoki Service Worker-ning
synchodisasida oddiyroq "qayta urinish" mexanizmi) dan foydalaning. Foydalanuvchi onlayn bo'lganda, saqlangan ma'lumotlarni IndexedDB dan oling va uni backend serveringiz bilan sinxronlashtirishga harakat qiling. - Tozalash: Ma'lumotlar muvaffaqiyatli sinxronlashtirilgandan so'ng, uni IndexedDB dan olib tashlang.
Ushbu yondashuv barqaror foydalanuvchi tajribasini ta'minlaydi, bunda ulashish tarmoq muammolari tufayli hech qachon muvaffaqiyatsizlikka uchramaydi, bu turli tarmoq sharoitlariga ega global auditoriya uchun muhim ahamiyatga ega.
Foydalanuvchi Tajribasi va Fikr-mulohaza
Yaxshi foydalanuvchi tajribasi muvaffaqiyatli ma'lumotlarni qayta ishlash bilan tugamaydi. Aniq va o'z vaqtida fikr-mulohaza berish muhim:
- Yuklanish ko'rsatkichlari: Agar Service Worker-ingiz og'ir qayta ishlashni yoki tez tarmoq chaqiruvini bajarishi kerak bo'lsa, yo'naltirishdan oldin nishon sahifasida vaqtinchalik yuklanish ko'rsatkichini ko'rsating.
- Bildirishnomalar: Qayta ishlagandan so'ng, muvaffaqiyat yoki muvaffaqiyatsizlik xabarini yuborish uchun Notifications API dan foydalaning, ayniqsa foydalanuvchi PWA-ingizdan uzoqlashgan bo'lsa. Bu, ayniqsa, fon qayta ishlash uchun foydalidir.
- Kontekstga yo'naltirish: Foydalanuvchini ulashish harakati kontekstida mantiqiy bo'lgan sahifaga yo'naltiring. Masalan, rasm ulashilgandan so'ng, ularni yangi yuklangan rasmlarni ko'rsatadigan sahifaga yoki rasm yuklangan tahrirlovchiga yo'naltiring.
- Mahalliylashtirish: Barcha foydalanuvchi fikr-mulohaza xabarlari (muvaffaqiyat, xato, yuklanish) brauzerning til afzalliklari yoki ilovangizning ichki mahalliylashtirish strategiyasidan foydalangan holda global auditoriyangiz uchun mahalliylashtirilganligiga ishonch hosil qiling.
Amaliy Joriy Etish Misollari va Eng Yaxshi Amaliyotlar
Keling, bilimlarimizni turli ulashish ssenariylari uchun amaliy misollar bilan mustahkamlaylik, global eng yaxshi amaliyotlarni yodda tutgan holda.
1-misol: Oddiy matn/URL ulashish (qaydlar ilovasi, xatcho'plar xizmati)
Foydalanuvchilarga maqolalar yoki qaydlarni saqlashga yordam beradigan PWA-ni tasavvur qiling. Ular qiziqarli matn parchasi yoki URL topib, uni tezda ilovangizga saqlamoqchi.
Veb Manifest parchasi (manifest.json):
{
"name": "Mening Global Qaydlarim",
"short_name": "Qaydlar",
"start_url": ".",
"display": "standalone",
"icons": [
{ "src": "/icons/note-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/note-512.png", "sizes": "512x512", "type": "image/png" }
],
"share_target": {
"action": "/save-note/",
"method": "GET",
"enctype": "application/x-www-form-urlencoded",
"params": {
"title": "noteTitle",
"text": "noteContent",
"url": "sourceUrl"
}
}
}
So'rovni qayta ishlash uchun Service Worker (service-worker.js):
self.addEventListener('fetch', (event) => {
const url = new URL(event.request.url);
if (url.pathname === '/save-note/' && event.request.method === 'GET') {
event.respondWith(async function() {
const params = url.searchParams;
const title = params.get('noteTitle') || 'Sarlavhasiz qayd';
const content = params.get('noteContent') || '';
const sourceUrl = params.get('sourceUrl') || '';
// Qaydni oflayn kirish uchun IndexedDB ga saqlashni simulyatsiya qilish
const db = await openIndexedDB('global-notes-db');
await addNoteToDB(db, { id: Date.now(), title, content, sourceUrl, timestamp: new Date() });
// Xabar bilan tasdiqlash sahifasiga yo'naltirish
return Response.redirect(`/notes/success/?title=${encodeURIComponent(title)}`, 303);
}());
return;
}
// Boshqa aktivlarni keshdan yoki tarmoqdan taqdim etish
event.respondWith(caches.match(event.request).then(response => {
return response || fetch(event.request);
}));
});
// IndexedDB uchun yordamchi funksiyalar (soddalashtirilgan)
async function openIndexedDB(dbName) {
return new Promise((resolve, reject) => {
const request = indexedDB.open(dbName, 1);
request.onupgradeneeded = (event) => {
const db = event.target.result;
db.createObjectStore('notes', { keyPath: 'id' });
};
request.onsuccess = (event) => resolve(event.target.result);
request.onerror = (event) => reject('IndexedDB xatosi: ' + event.target.errorCode);
});
}
async function addNoteToDB(db, note) {
return new Promise((resolve, reject) => {
const transaction = db.transaction(['notes'], 'readwrite');
const store = transaction.objectStore('notes');
const request = store.add(note);
request.onsuccess = () => resolve();
request.onerror = (event) => reject('Qayd qo\'shishda xato: ' + event.target.errorCode);
});
}
Nishon sahifasi (/notes/success/index.html):
<!DOCTYPE html>
<html lang="uz">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Qayd saqlandi!</title>
<style>
body { font-family: sans-serif; text-align: center; margin-top: 50px; }
.container { max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #ccc; border-radius: 8px; }
h1 { color: #333; }
p { color: #666; }
a { color: #007bff; text-decoration: none; }
a:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="container">
<h1>Qayd muvaffaqiyatli saqlandi!</h1>
<p>Sizning kontentingiz qaydlaringizga qo'shildi. Ulashganingiz uchun rahmat.</p>
<p><a href="/">Mening qaydlarimga o'tish</a></p>
<script>
const urlParams = new URLSearchParams(window.location.search);
const savedTitle = urlParams.get('title');
if (savedTitle) {
document.querySelector('h1').textContent = `"${savedTitle}" saqlandi!`;
}
</script>
</div>
</body>
</html>
2-misol: Rasm ulashish (foto tahrirlovchi, ijtimoiy media yuklovchi)
Foydalanuvchilar o'z qurilmalarining galereyasidan to'g'ridan-to'g'ri rasm yuklay oladigan foto ulashish platformasi uchun PWA-ni ko'rib chiqing.
Veb Manifest parchasi (manifest.json):
{
"name": "Global Foto Ulashish",
"short_name": "Fotolar",
"start_url": ".",
"display": "standalone",
"icons": [
{ "src": "/icons/photo-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/photo-512.png", "sizes": "512x512", "type": "image/png" }
],
"share_target": {
"action": "/upload-photo/",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"title": "photoCaption",
"files": [
{
"name": "imageFile",
"accept": ["image/jpeg", "image/png", "image/gif", "image/webp"]
}
]
}
}
}
So'rovni qayta ishlash uchun Service Worker (service-worker.js):
// ... (oldingi Service Worker kodi)
self.addEventListener('fetch', (event) => {
const url = new URL(event.request.url);
if (url.pathname === '/upload-photo/' && event.request.method === 'POST') {
event.respondWith(async function() {
try {
const formData = await event.request.formData();
const caption = formData.get('photoCaption') || '';
const imageFile = formData.get('imageFile');
if (imageFile instanceof File) {
console.log(`Qabul qilingan rasm: ${imageFile.name} (${imageFile.type}), Izoh: "${caption}"`);
// Haqiqiy hayotda siz bu faylni serverga yuklaysiz
// yoki oflayn sinxronizatsiya uchun IndexedDB ga saqlaysiz.
// Namoyish uchun, keling, shunchaki URL yaratib, yo'naltiramiz.
const imageUrl = URL.createObjectURL(imageFile); // Bu faqat brauzer kontekstida ishlaydi, xom SWda emas
// Asinxron qayta ishlashni simulyatsiya qilish (masalan, yuklash)
await new Promise(resolve => setTimeout(resolve, 2000)); // 2 soniyalik kechikish
// Rasmni yoki tasdiqnomani ko'rsata oladigan sahifaga yo'naltirish
// Eslatma: URL.createObjectURL yo'naltirishlar bo'ylab saqlanib qolmaydi.
// Haqiqiy stsenariy uchun siz uni saqlashingiz yoki yuklashingiz kerak bo'ladi.
return Response.redirect(`/photos/view/?caption=${encodeURIComponent(caption)}&filename=${encodeURIComponent(imageFile.name)}`, 303);
} else {
console.warn('Yuklash uchun rasm fayli olinmadi.');
return Response.redirect('/photos/error/?message=no_image_found', 303);
}
} catch (error) {
console.error('Ulashilgan rasmni qayta ishlashda xato:', error);
return Response.redirect('/photos/error/?message=upload_failed', 303);
}
}());
return;
}
// ... (boshqa fetch hodisasini qayta ishlash, kesh strategiyasi)
});
Nishon sahifasi (/photos/view/index.html):
<!DOCTYPE html>
<html lang="uz">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Foto yuklandi!</title>
<style>
body { font-family: sans-serif; text-align: center; margin-top: 50px; }
.container { max-width: 800px; margin: 0 auto; padding: 20px; border: 1px solid #ccc; border-radius: 8px; }
h1 { color: #333; }
p { color: #666; }
img { max-width: 100%; height: auto; border-radius: 4px; margin-top: 20px; }
a { color: #007bff; text-decoration: none; }
a:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="container">
<h1>Foto yuklanmoqda!</h1>
<p>Sizning rasmingiz qayta ishlanmoqda. Ulashganingiz uchun rahmat.</p>
<div id="image-preview"></div>
<p><a href="/">Mening fotolarimga o'tish</a></p>
<script>
const urlParams = new URLSearchParams(window.location.search);
const caption = urlParams.get('caption');
const filename = urlParams.get('filename');
if (caption) {
document.querySelector('h1').textContent = `"${caption}" yuklandi!`;
}
if (filename) {
// Haqiqiy ilovada siz bu yerda serveringizdan yuklangan haqiqiy rasmni olib kelardingiz
// yoki qayta ishlash tugagunicha umumiy o'rinbosar ko'rsatardingiz.
const previewDiv = document.getElementById('image-preview');
const p = document.createElement('p');
p.textContent = `Fayl: ${filename}`; // O'rinbosar sifatida fayl nomini ko'rsatish
previewDiv.appendChild(p);
}
</script>
</div>
</body>
</html>
Katta fayllar uchun mulohazalar: Katta fayllar bilan ishlaganda, vaqtinchalik saqlash uchun IndexedDB va kechiktirilgan yuklash uchun Background Sync bilan Service Worker yondashuvi muhim ahamiyatga ega. Bu interfeysning bloklanishini oldini oladi va ko'plab global mintaqalarda keng tarqalgan tarmoq uzilishlariga qarshi chidamlilikni ta'minlaydi.
3-misol: Boy kontent ulashish (samaradorlik vositasi, tadqiqot platformasi)
Tadqiqot yordamchisi yoki loyiha boshqaruvi vositasi kabi PWA uchun foydalanuvchilar o'z qaydlari va ehtimol ilova qilingan hujjatlar bilan birga veb-sahifani ulashishni xohlashlari mumkin.
Veb Manifest parchasi (manifest.json):
{
"name": "Global Tadqiqot Markazi",
"short_name": "Tadqiqot",
"start_url": ".",
"display": "standalone",
"icons": [
{ "src": "/icons/research-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/research-512.png", "sizes": "512x512", "type": "image/png" }
],
"share_target": {
"action": "/add-resource/",
"method": "POST",
"enctype": "multipart/form-data",
"params": {
"title": "resourceTitle",
"text": "userNotes",
"url": "originalUrl",
"files": [
{
"name": "attachments",
"accept": ["image/*", "application/pdf", "text/plain", ".doc", ".docx", ".xls", ".xlsx"]
}
]
}
}
}
So'rovni qayta ishlash uchun Service Worker (service-worker.js):
// ... (oldingi Service Worker kodi, bu blokni fetch tinglovchisi ichiga qo'shing)
if (url.pathname === '/add-resource/' && event.request.method === 'POST') {
event.respondWith(async function() {
try {
const formData = await event.request.formData();
const title = formData.get('resourceTitle') || 'Sarlavhasiz resurs';
const notes = formData.get('userNotes') || '';
const originalUrl = formData.get('originalUrl') || '';
const attachments = formData.getAll('attachments');
console.log('Ulashilgan Resurs:', { title, notes, originalUrl });
attachments.forEach(file => {
if (file instanceof File) {
console.log(` Ilova: ${file.name} (${file.type})`);
// Har bir ilovani saqlash/yuklash mantig'ini amalga oshiring
}
});
// Murakkab qayta ishlash va API chaqiruvlarini simulyatsiya qilish
await new Promise(resolve => setTimeout(resolve, 3000)); // 3 soniyalik kechikish
return Response.redirect(`/resources/detail/?title=${encodeURIComponent(title)}`, 303);
} catch (error) {
console.error('Ulashilgan resursni qayta ishlashda xato:', error);
return Response.redirect('/resources/error/?message=resource_add_failed', 303);
}
}());
return;
}
// ... (service worker fetch tinglovchisining qolgan qismi)
Nishon sahifasi (/resources/detail/index.html):
<!DOCTYPE html>
<html lang="uz">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Resurs qo'shildi!</title>
<style>
body { font-family: sans-serif; text-align: center; margin-top: 50px; }
.container { max-width: 900px; margin: 0 auto; padding: 20px; border: 1px solid #ccc; border-radius: 8px; }
h1 { color: #333; }
p { color: #666; }
a { color: #007bff; text-decoration: none; }
a:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="container">
<h1>Resurs muvaffaqiyatli qo'shildi!</h1>
<p>Sizning tadqiqot kontentingiz kiritildi.</p>
<p><a href="/">Barcha resurslarni ko'rish</a></p>
<script>
const urlParams = new URLSearchParams(window.location.search);
const resourceTitle = urlParams.get('title');
if (resourceTitle) {
document.querySelector('h1').textContent = `"${resourceTitle}" qo'shildi!`;
}
</script>
</div>
</body>
</html>
Share Target uchun global UX mulohazalari
Web Share Targetni global fikrlash tarzida amalga oshirish shunchaki funksiyani yoqishdan ko'proq narsani o'z ichiga oladi:
- Ulashilgan kontentni qayta ishlashni mahalliylashtirish: Qabul qilingan, ko'rsatilgan yoki qayta ishlangan har qanday matn til yoki belgilar to'plamidan qat'i nazar to'g'ri qayta ishlanishini ta'minlang. UTF-8 kodlashini izchil ishlating. Agar sarlavhalar yoki tavsiflar boshqa tilda ulashilsa, PWA-ingiz ularni ideal holda shunday tanib, saqlashi yoki hech bo'lmaganda to'g'ri ko'rsatishi kerak.
- Turli xil belgilar to'plamlari va kodlashlarni qayta ishlash: Turli manbalardan ulashilgan matn bilan ishlaganda, turli xil belgilar kodlashlariga tayyor bo'ling. Brauzerlar odatda buni yaxshi uddalaydi, ammo server tomonidagi yoki IndexedDB saqlash omboringiz ham ko'p baytli belgilarni to'g'ri saqlashi va olishi mumkinligiga ishonch hosil qiling.
- Ulashilgan kontent uchun kirish imkoniyati xususiyatlari: Agar ulashilgan kontent (ayniqsa, rasmlar yoki fayllar) PWA-ingizda ko'rsatilsa yoki integratsiya qilinsa, uning kirish imkoniyati saqlanib qolishini ta'minlang. Rasmlar uchun alt matn, videolar uchun transkriptlar taqdim eting va foydalanuvchi kiritishi uchun formalar (masalan, qaydlar qo'shish) klaviatura orqali boshqariladigan va ekran o'quvchi uchun qulay ekanligiga ishonch hosil qiling.
- Turli xil tarmoq sharoitlarida ishlash samaradorligi: Bu yerda Service Worker-ning oflayn qayta ishlash va fon qayta ishlashdagi roli muhim ahamiyat kasb etadi. Sekinroq yoki uzilishli internetga ega mintaqalarda fayl yuklashlarni yoki murakkab ma'lumotlarni qayta ishlashni fonga o'tkazish seziladigan ishlash samaradorligini va foydalanuvchi mamnuniyatini sezilarli darajada yaxshilaydi. PWA-ingiz aktivlari uchun agressiv keshlashni amalga oshiring, bu uning zaif aloqa bilan ham tez yuklanishini ta'minlaydi.
- Ikonografiya va nomlash: Manifestingizda aniq, universal tushunarli piktogrammalar va qisqa
short_nametanlang. Bular foydalanuvchilar o'zlarining mahalliy ulashish menyusida ko'radigan narsalardir. Global miqyosda aks etmasligi mumkin bo'lgan jargon yoki madaniy maxsus havolalardan saqlaning.
Ilg'or Mavzular va Chekka Holatlar
Asosiy amalga oshirish ko'pchilik stsenariylarni qamrab olsa-da, mustahkam, ishlab chiqarishga tayyor Web Share Target integratsiyasi ilg'or mavzularga va potentsial chekka holatlarga e'tibor berishni talab qiladi.
Xavfsizlik oqibatlari: Kiruvchi ma'lumotlarni tozalash, XSS oldini olish
Tashqi manbadan, hatto tizim darajasidagi ulashish orqali olingan har qanday ma'lumotga ishonchsiz deb qarash kerak. Bu xavfsizlik uchun eng muhimi:
- Kiritishni tekshirish: Har doim kiruvchi ma'lumotlarning formati va turini tekshiring. Masalan, agar siz URL kutayotgan bo'lsangiz, uning haqiqiy URL satri ekanligiga ishonch hosil qiling. Agar siz raqam kutayotgan bo'lsangiz, uni tahlil qiling va diapazonini tekshiring.
- Tozalash: Agar siz ulashilgan matn kontentini to'g'ridan-to'g'ri veb-sahifada ko'rsatsangiz, uni saytlararo skripting (XSS) hujumlarini oldini olish uchun albatta tozalashingiz kerak. Yomon niyatli foydalanuvchilar ulashilgan matn orqali bajariladigan JavaScript kodini kiritishga urinishlari mumkin. Foydalanuvchi tomonidan taqdim etilgan satrlarni DOM-ga kiritishda DOMPurify kabi kutubxonalardan yoki
textContent(innerHTMLo'rniga) kabi o'rnatilgan brauzer funksiyalaridan foydalaning. - Fayl turini tekshirish: Manifestdagi
acceptyordam bersa-da, bu mijoz tomonidagi maslahatdir. Har doim fayl turlarini serveringizda (agar yuklayotgan bo'lsangiz) yoki Service Worker-da faylning MIME turini va potentsial ravishda uning sehrli baytlarini tekshirish orqali tasdiqlang, shunchaki kengaytmaga tayanmang. - Kontent xavfsizligi siyosati (CSP): Resurslarni qaerdan yuklash mumkinligini cheklash va inline skriptlarni oldini olish orqali XSS kabi turli hujumlarni yumshatish uchun kuchli CSP-ni amalga oshiring.
Xatolarni qayta ishlash va zaxira mexanizmlari
Ishlar noto'g'ri ketishi mumkin va ketadi. Sizning amalga oshirishingiz chidamli bo'lishi kerak:
- Service Worker xatolari: Agar Service Worker-ingiz ma'lumotlarni tahlil qilish yoki fayllarni qayta ishlashda muvaffaqiyatsizlikka uchrasa, uning bu xatolarni ushlab, zaxira yechimini taqdim etishini ta'minlang. Bu tavsiflovchi xabar bilan xatolik sahifasiga yo'naltirish yoki vazifani qayta urinish uchun navbatga qo'yishni o'z ichiga olishi mumkin.
- Backend bilan aloqa muvaffaqiyatsizliklari: Agar PWA-ingiz ulashilgan ma'lumotlarni saqlash uchun backendga tayanadigan bo'lsa (masalan, fayllarni yuklash), tarmoq xatolarini chiroyli tarzda qayta ishlang. Background Sync API buning uchun ajoyib, u aloqa tiklanganda kechiktirilgan qayta urinishlarga imkon beradi.
- Muvaffaqiyatsizlik haqida foydalanuvchiga fikr-mulohaza: Agar ulashish operatsiyasi muvaffaqiyatsiz bo'lsa, foydalanuvchiga aniq, amaliy fikr-mulohaza bering. Umumiy "Nimadir noto'g'ri ketdi" degan xabar yordam bermaydi. Bu tarmoq muammosi, noto'g'ri fayl turi yoki server xatosi ekanligini aniqlang.
- Bosqichma-bosqich pasayish: Brauzer qo'llab-quvvatlashi uchun avvalroq aytib o'tilganidek, agar Web Share Target API mavjud bo'lmasa, PWA-ingiz hali ham bir xil maqsadga erishishning muqobil (garchi kamroq qulay bo'lsa ham) usullarini taklif qilishini ta'minlang (masalan, standart fayl kiritish yoki nusxalash-joylashtirish maydoni).
Share Target dasturlarini disk raskadrovka qilish
Service Workerlar va Web Share Targetni disk raskadrovka qilish ularning fon tabiati tufayli qiyin bo'lishi mumkin:
- Chrome DevTools: Chrome DevTools-dagi "Application" yorlig'i sizning eng yaxshi do'stingizdir.
- Manifest:
manifest.jsonfaylingiz to'g'ri tahlil qilinganligini vashare_targeta'zosi tanilganligini tekshirish uchun "Manifest" bo'limini tekshiring. - Service Workers: Service Worker-ingizning holatini tekshirish, ro'yxatdan o'tkazish/o'chirish va eng muhimi, uning konsol jurnallariga kirish uchun "Service Workers" bo'limidan foydalaning.
- Network: "Network" yorlig'i
actionURL-ingizga qilingan so'rovni ko'rsatadi, bu sizga usul, sarlavhalar va yukni tekshirish imkonini beradi. - Konsolga yozish: Service Worker-ingiz ichidagi keng qamrovli
console.log()bayonotlari ma'lumotlar oqimini kuzatish va muammolar qayerda yuzaga kelayotganini aniqlash uchun bebaho. - PWA Builder / Lighthouse: PWA Builder va Lighthouse kabi vositalar manifestingizni va PWA sozlamalaringizni tasdiqlashga yordam beradi, bu esa ulashish nishonini ro'yxatdan o'tkazishga to'sqinlik qilishi mumkin bo'lgan umumiy xatolarni aniqlaydi.
- Haqiqiy qurilmalarda sinab ko'rish: Har doim o'z dasturingizni haqiqiy mobil qurilmalarda (Web Share Target uchun asosan Android) sinab ko'ring, haqiqiy dunyo xatti-harakatlarini kuzatish va qurilmaga xos g'alati holatlarni aniqlash uchun.
Brauzerga xos g'alati holatlar va vaqtinchalik yechimlar
Standartlar izchillikni maqsad qilgan bo'lsa-da, brauzer dasturlari farq qilishi mumkin:
- MIME turi qat'iyligi: Ba'zi brauzerlar yoki OS versiyalari siz belgilagan
acceptturlariga nisbatan qat'iyroq bo'lishi mumkin. Keng tarqalgan rasm va hujjat turlari bilan sinab ko'ring. - URL uzunligi cheklovlari:
POSTbuni yumshatsa-da,GETso'rovlari URL uzunligi cheklovlariga duch kelishi mumkin, ayniqsa juda uzun matn ulashilganda. Usulingizni tanlashda buni yodda tuting. - Ishga tushirish xatti-harakati: PWA-ning qanday ishga tushirilishi (masalan, yangi oynada, to'liq ekranda yoki oldinga chiqarilishi) OS/brauzer birikmalari o'rtasida biroz farq qilishi mumkin. Nishon sahifangizni moslashuvchan va turli displey rejimlarini qayta ishlashga mo'ljallangan holda loyihalashtiring.
- Qo'llab-quvvatlanmaydigan brauzerlar uchun zaxira: Web Share Targetni qo'llab-quvvatlamaydigan brauzerlar uchun foydalanuvchilarga kontentni qo'lda yuklash yoki joylashtirish uchun aniq yo'lni ta'minlang. Siz API qo'llab-quvvatlashini aniqlashingiz (masalan,
'share_target' in navigator.serviceWorker.controller.scopening mazmunli ekanligini tekshirish orqali yoki shunchaki ilovangiz ulashish oynasida paydo bo'lishini kuzatish orqali) va interfeysni shunga mos ravishda sozlashingiz mumkin.
Backend xizmatlari bilan integratsiya
Ko'pgina amaliy ilovalar uchun ulashilgan ma'lumotlar oxir-oqibat doimiy saqlash, keyingi qayta ishlash yoki ko'p qurilmali sinxronizatsiya uchun backend serveriga yetib borishi kerak bo'ladi. Service Worker buni boshqarish uchun ideal joy:
- Asinxron yuklashlar: Service Worker-da ma'lumotlarni (ayniqsa fayllarni) olgandan so'ng, backend API-ingizga asinxron
fetch()so'rovini qiling. - Oflayn navbatga qo'yish: Agar backend so'rovi muvaffaqiyatsiz bo'lsa (masalan, tarmoq yo'qligi sababli), ma'lumotlarni (va API so'nggi nuqtasi, sarlavhalar kabi zarur metama'lumotlarni) IndexedDB-da saqlang. Foydalanuvchi onlayn bo'lganda yuklashni qayta urinish uchun Background Sync-dan foydalaning.
- API dizayni: Backend API so'nggi nuqtalaringizni Web Share Target-ingiz tomonidan yuborilgan ma'lumotlar formatini (masalan, fayllar uchun
multipart/form-data, matn/URL-lar uchunapplication/jsonyokiapplication/x-www-form-urlencoded) qabul qilishga mo'ljallangan holda loyihalashtiring. - Autentifikatsiya: Agar PWA-ingiz foydalanuvchi autentifikatsiyasini talab qilsa, Service Worker-ingiz autentifikatsiya tokenlarini (masalan, JWT-lar) o'zining backend so'rovlariga qo'sha olishini ta'minlang. Bu odatda tokenning xavfsiz saqlanishini (masalan, IndexedDB-da) va tarmoq so'rovini qilishdan oldin uni olishni o'z ichiga oladi.
Veb Ulashish va O'zaro Muvofiqlikning Kelajagi
Web Share Target API muhim bosqich bo'lsa-da, vebning to'liq tizim integratsiyasi va o'zaro muvofiqligi sari sayohati davom etmoqda. Veb imkoniyatlari rivojlanib borar ekan, biz yanada uzluksiz o'zaro ta'sirlarni kutishimiz mumkin.
Paydo bo'layotgan standartlar va takliflar
- Fayl tizimiga kirish API: Ilovaga *ulashish* bilan bevosita bog'liq bo'lmasa-da, Fayl tizimiga kirish API (veb-ilovalarga ruxsat bilan foydalanuvchining mahalliy fayl tizimidagi fayllarni o'qish va yozish imkonini beradi) kabi API-lar veb va mahalliy o'rtasidagi chegaralarni yanada xiralashtiradi, bu esa PWA ichida ulashilgan fayllarning mahalliy boshqarilishini soddalashtirishi mumkin.
- Batafsilroq ulashish boshqaruvlari: API yetuklashib borar ekan, qaysi kontent turlarini ulashish mumkinligi ustidan yanada nozik nazorat yoki oddiy matn/URL/fayllardan tashqari boyroq metama'lumotlarni ko'rishimiz mumkin.
- Kengaytirilgan PWA hayot sikli: PWA hayot siklini boshqarishdagi yaxshilanishlar (masalan, yaxshiroq fon bajarilishi, yaxshilangan o'rnatish tajribalari) tabiiy ravishda Web Share Target kabi xususiyatlarga foyda keltiradi, bu esa PWA-larni tizimga integratsiyalashgan ilovalar sifatida yanada ishonchli va samarali qiladi.
PWA-larning Tizim Integratsiyasidagi Roli
Progressiv Veb-Ilovalar bu integratsiyaning oldingi safida turibdi. PWA manifest va Service Worker namunalariga rioya qilish orqali veb-ilovalar bir paytlar faqat mahalliy ilovalarga xos bo'lgan super kuchlarga ega bo'ladi: oflayn imkoniyatlar, push-bildirishnomalar, o'rnatiluvchanlik va tizim darajasidagi ulashish. Bu shuni anglatadiki, ko'plab foydalanish holatlari uchun yaxshi qurilgan PWA mahalliy ilovadan farq qilmaydigan yoki hatto undan ustun bo'lgan tajribani taklif qilishi mumkin, ayniqsa vebning topiluvchanlik va bir zumda yangilanish kabi o'ziga xos afzalliklarini hisobga olgan holda.
Vebning Mahalliy Ilovalar Bilan Birga Imkoniyatlarini Oshirish
Maqsad, albatta, mahalliy ilovalarni butunlay almashtirish emas, balki vebni teng huquqli platforma darajasiga ko'tarishdir. Web Share Target API foydalanuvchilarga vazifa uchun o'zlari afzal ko'rgan ilovani tanlash imkonini beradi, u mahalliy ilova bo'ladimi yoki PWA. Bu raqobat har ikkala ekotizimda innovatsiyalarni rag'batlantiradi va foydalanuvchilarga ko'proq tanlov va moslashuvchanlikni taqdim etadi, bu esa gavjum megapolislardan tortib, ilovalar do'konlariga yoki qimmat ma'lumotlar rejalari cheklangan chekka jamoalargacha bo'lgan hamma joydagi foydalanuvchilar uchun foydalidir.
Xulosa: Vebni Uzluksiz Ulashish Bilan Kuchaytirish
Web Share Target API frontend veb-dasturlash uchun transformatsion sakrashni ifodalaydi, Progressiv Veb-Ilovalarga operatsion tizim darajasida kontentni ulashishning fundamental harakatida ishtirok etish imkonini beradi. Veb Manifestingizdagi share_target ni sinchkovlik bilan sozlash va Service Worker-ning mustahkam imkoniyatlaridan foydalanish orqali siz nafaqat intuitiv va yuqori darajada jalb qiluvchi, balki foydalanuvchining qurilmasi bilan chuqur integratsiyalashgan veb-tajribalarini yaratishingiz mumkin, ularning global joylashuvi yoki qurilma xususiyatlaridan qat'i nazar.
Global nuqtai nazardan, ushbu API muhim foydalanuvchi ehtiyojlarini qondiradi: u to'siqlarni kamaytiradi, unumdorlikni oshiradi va an'anaviy mahalliy ilovalarga kuchli alternativa taqdim etadi, bu ayniqsa qurilma xotirasi, ma'lumotlar narxi yoki ilovalar do'koniga kirish cheklangan bo'lishi mumkin bo'lgan mintaqalarda qimmatlidir. Uzluksiz ulashish tajribasini taklif qilish orqali sizning PWA-ingiz yanada topiluvchan, foydaliroq va oxir-oqibat butun dunyo bo'ylab foydalanuvchilari tomonidan qadrlanadigan bo'ladi.
Biz barcha frontend dasturchilarni Web Share Target API-ni o'rganishga va amalga oshirishga undaymiz. Ochiq vebning kuchini qabul qiling, chidamli va integratsiyalashgan PWA-larni yarating va hamma uchun yanada bog'langan va samarali raqamli landshaftga hissa qo'shing. Veb-ilovalarning kelajagi — bu ularning mahalliy hamkasblari bilan yelkama-yelka turib, boy, qobiliyatli va universal kirish mumkin bo'lgan tajribalarni taklif qilishidir.